MODBUS 프로토콜로 Kelman Ltd. 의 Transfix 장비와 통신을 위해 DLL-MODBUS2 통신 드라이버를 사용한다.
<그림 1>은 MODBUS 통신 드라이버를 사용할 때의 통신설정 예이다.
<그림 1> MODBUS 시리얼 통신설정 예
<그림 1>의 DEVICE 설정은 연결된 통신포트(COM1), 통신속도( 9600 ), Parity Bit ( 0 ), Data Bit ( 8 ), Stop Bit ( 1 ), 순으로 장비에 설정된 값을 입력한다.
MODBUS 통신 드라이버의 옵션 부 에는 읽은 패킷의 CRC 체크 여부( 1 = 체크 함, 0 = 체크 안함 ), 비트 ON 쓰기 값 ( 기본 = 65280 ), MODBUS IP 프로토콜 사용여부( 1 = IP 프로토콜, 0 = 일반 시리얼 프로토콜 ) , 비트 OFF 쓰기 값 ( 기본 = 0 ) 순으로 콤마( , )로 구분하여 입력한다.
참고) MODBUS IP 프로토콜은 Ethernet 등으로 연결된 시스템에서 사용하고 통신형식은 TCP/IP 또는 UDP/IP를 사용한다.
읽기 설정 방법
READ | 스테이션 | 읽을 종류 | 읽을 시작주소 | 메모리 저장위치 | 읽는 개수 |
READ, | 1, | 3, | 0, | 0, | 32, |
DWORD, | 1, | 3d, | 200, | 0, | 50, |
DWORD, | 1, | 3d, | 300, | 50, | 50, |
DWORD, | 1, | 3F, | 2000, | 0, | 50, |
1) 스테이션 : ION Meter 의 스테이션 (ID) 번호. ( 0 ~255 )
2) 읽을 종류 : 읽을 데이터 종류를 지정.
3 – WORD 단위의 데이터 읽기,
3D – DWORD 단위의 데이터 읽기 ( LO, HI 데이터 순 ),
3d – DWORD 단위의 데이터 읽기 ( HI, LO 데이터 순 ),
3lD, 3LD – 8 BYTE 단위의 데이터 읽기 ( LO, HI 데이터 순 ),
3ld, 3Ld – 8 BYTE 단위의 데이터 읽기 ( HI, LO 데이터 순 ),
3M – HI WORD x 10000 + LO WORD 형식의 DWORD 데이터 읽기 ( LO, HI 데이터 순 ),
3m – HI WORD x 10000 + LO WORD 형식의 DWORD 데이터 읽기 ( HI, LO 데이터 순 ),
3lM, 3LM – HI WORD x 10000 + LO WORD 형식의 8 BYTE 단위의 데이터 읽기 ( LO, HI 데이터 순 ),
3lm, 3Lm – HI WORD x 10000 + LO WORD 형식의 8 BYTE 단위의 데이터 읽기 ( HI, LO 데이터 순 ),
3s – 16 BYTE BCD ASCII 데이터 읽기,
3F – FLOAT 단위의 데이터 읽기 ( LO, HI 데이터 순 ),
3F2 – FLOAT 단위의 데이터 읽기 ( LO, HI 데이터 순 2 ),
3f – FLOAT 단위의 데이터 읽기 ( HI, LO 데이터 순 ),
3f2 – FLOAT 단위의 데이터 읽기 ( HI, LO 데이터 순 2 ),
1X, 2X – 비트 단위의 데이터 읽기 ( 1xxxx, 2xxxx Modbus 번지 )
1XB, 2XB – 비트 단위의 데이터 읽기, 비트 단위 읽기 개수 ( 1xxxx, 2xxxx Modbus 번지 )
3B – BYTE 단위의 데이터 읽기.
TRANS – Transfix의 Historical Records를 읽기.
3) 읽을 시작주소 : 읽을 시작번지. (modbus 주소 –1 )
읽을 종류가 TRANS 일 때는 읽을 Record index.
4) 메모리 저장 위치 : 읽어온 상태 값을 저장할 버퍼위치.
5) 읽는 크기: 읽을 크기.
3 – WORD 단위 개수,
3D, 3d, 3M, 3m, 3F, 3F2, 3f, 3f2 – 2 WORD 단위 개수,
3LD, 3ld, 3LM, 3lm – 4 WORD 단위 개수,
3s – 8 WORD 단위 개수,
1X, 2X – WORD 단위 개수,
1XB, 2XB – 비트 단위의 읽기 개수, ( 1 ~ 15 = 1 WORD, 16 ~ 31 = 2 WORD, …)
3B – BYTE 단위 개수.
TRANS - 226바이트로 고정.
<표 1>은 Transfix 장비의 Historical Records를 읽은 값의 저장 위치와 내용이다. TRANS 읽을 종류로 읽은 값은 WORD/DWORD/FLOAT 메모리의 같은 번지에 같은 값(메모리 형식에 따라 값이 달라짐)을 저장한다.
저장위치 | 저장내용 | 범위 |
메모리 저장위치 + 0 | Number | 0 ~ 7FFFh |
메모리 저장위치 + 1 | Oil Source | 0 ~ 2 = Oil Source A ~ C |
메모리 저장위치 + 2 | Year | 0 ~ 9999 |
메모리 저장위치 + 3 | Month | 1 ~ 12 |
메모리 저장위치 + 4 | Day | 1 ~ 31 |
메모리 저장위치 + 5 | Hour | 0 ~ 23 |
메모리 저장위치 + 6 | Min | 0 ~ 59 |
메모리 저장위치 + 7 ~ 8 | PGA/Host Firmware Version | 16BIT(WORD) DATA |
메모리 저장위치 + 9 ~ 10 | Alarm Conc/ROC Status | |
메모리 저장위치 + 11 | Alarm Output Status | |
메모리 저장위치 + 12 | Measurement Flags | |
메모리 저장위치 + 13 |
|
|
메모리 저장위치 + 14 | Error Codes | 32BIT(DWORD) DATA |
메모리 저장위치 + 15 | Measurement Duration(sec) | WORD |
메모리 저장위치 + 16 | Spare | 0으로 고정(WORD) |
메모리 저장위치 + 17 | H2 | Float 값, PPM |
메모리 저장위치 + 18 | CO2 | |
메모리 저장위치 + 19 | CO | |
메모리 저장위치 + 20 | C2H4 | |
메모리 저장위치 + 21 | C2H6 | |
메모리 저장위치 + 22 | CH4 | |
메모리 저장위치 + 23 | C2H2 | |
메모리 저장위치 + 24 | H2O | |
메모리 저장위치 + 25 | O2 | |
메모리 저장위치 + 26 | TDCG | |
메모리 저장위치 + 27 | N2 | |
메모리 저장위치 + 28 | TDG | |
메모리 저장위치 + 29 | Oil Pressure | Float 값, kPa |
메모리 저장위치 + 30 | Oil Temperature | Float 값, ℃ |
메모리 저장위치 + 31 | Ambient Temperature | |
메모리 저장위치 + 32 | Normalization Temperature | |
메모리 저장위치 + 33 ~ 38 | AI 1 ~ 6 | Float 값, 사용자 정의 단위 |
메모리 저장위치 + 39 ~ 42 | Spare | Float 값, 0으로 고정 |
메모리 저장위치 + 43 ~ 56 | Reserved 1 ~ 14 | Float 값 |
메모리 저장위치 + 57 ~ 63 | Spare | Float 값 |
메모리 저장위치 + 64 | Spare | WORD 값 |
<표 1> Transfix 장비의 Historical Records를 읽은 값의 저장위치와 내용
<그림 1> 프로토콜 옵션부의 아이콘을 클릭하면 <그림 2>의 대화상자가 나타나는데 여기서도 READ 스케쥴을 작성할 수 있다.
<그림 2> MODBUS 드라이버의 통신 읽기 설정 대화상자
<그림 2>의 , , 버턴과 리스트 박스를 이용하여 READ 스케쥴을 작성한다.
<그림 2>의 ‘Check CRC Error’ 부분에서 읽은 패킷의 CRC 체크여부, ‘Bit Write On Val’ 영역에 비트 ON 출력 시 쓰기 값( 기본 = 65280 ), ‘Use Modbus IP Protocol’ 에서 MODBUS IP 프로토콜 사용여부, ‘Bit Write Off Val’ 영역에 비트 OFF 출력 시 쓰기 값( 기본 = 0 )을 설정할 수 있다.
<그림 3> MODBUS 드라이버의 통신 읽기 설정 READ 추가/편집 대화상자의 예
<그림 3>는 <그림 2>의 대화상자에서 READ 스케쥴을 추가 또는 편집할 때 나타나는 대화상자이다.
출력은 SCAN File과 상관없이 컨트롤러의 직접 ADDRESS에 쓴다.
디지털 출력 설정법
디지털 출력으로 장비의 상태 값(reset 등)을 설정하거나 Relay 등을 제어할 수 있다.
디지털 출력 TAG 설정 시 필요한 요소는 아날로그 출력태그 설정요소와 동일하고 출력 값만 다르다.
아날로그 출력 설정법
아날로그 출력은 BYTE/WORD/DWORD/FLOAT 값을 메타에 쓰는 것을 말한다.
아날로그 출력 TAG 설정 시 필요한 요소
1) PORT 연결된 PORT 번호.
2) STATION 메타의 Station( ID )번호.
시리얼 통신 - 1 ~ 247,
TCP/IP – 100, 255 등.
3) Address 출력 번지. 10진수 단위의 출력번지. (Modbus 번지 – 1 )
읽을 종류가 TRANS 일 때는 읽을 Record index.
4) Extra1 출력하고자 하는 데이터 종류.
16 – WORD 단위의 데이터 쓰기,
16D – DWORD 단위의 데이터 쓰기 ( LO, HI 데이터 순 ),
16d – DWORD 단위의 데이터 쓰기 ( HI, LO 데이터 순 ),
16lD, 16LD – 8 BYTE 단위의 데이터 쓰기 ( LO, HI 데이터 순 ),
16ld, 16Ld – 8 BYTE 단위의 데이터 쓰기 ( HI, LO 데이터 순 ),
16M – HI WORD x 10000 + LO WORD 형식의 DWORD 데이터 쓰기 ( LO, HI 데이터 순 ),
16m – HI WORD x 10000 + LO WORD 형식의 DWORD 데이터 쓰기 ( HI, LO 데이터 순 ),
16lM, 16LM – HI WORD x 10000 + LO WORD 형식의 8 BYTE 단위의 데이터 쓰기 ( LO, HI 데이터 순 ),
16lm, 16Lm – HI WORD x 10000 + LO WORD 형식의 8 BYTE 단위의 데이터 쓰기 ( HI, LO 데이터 순 ),
16s – 16 BYTE BCD ASCII 데이터 쓰기,
16F – FLOAT 단위의 데이터 쓰기 ( LO, HI 데이터 순 ),
16F2 – FLOAT 단위의 데이터 쓰기 ( LO, HI 데이터 순 2 ),
16f – FLOAT 단위의 데이터 쓰기 ( HI, LO 데이터 순 ),
16f2 – FLOAT 단위의 데이터 쓰기 ( HI, LO 데이터 순 2 ),
16B – BYTE 단위의 데이터 쓰기.
TRANS – Transfix의 Historical Records를 읽기.
5) Extra2 읽을 종류가 TRANS 일 때 Historical Records 읽은 값을 저장하는 메모리 시작번지(<표 1> 참조).
기타 - 사용안함.
예1) Station : 1 Address : 0100 Extra1 : 16, EXTRA2 : 빈칸으로 설정하고 아날로그 출력을 하면 1번 Station MODBUS 장비의 100 번지 ( 101 Modbus 번지 ) 값을 설정한 값으로 변경할 수 있다.
예2) Station : 1 Address : 5000 Extra1 : 16d, EXTRA2 : 빈칸으로 설정하고 아날로그 출력을 하면 1번 Station MODBUS 장비의 5000 번지 ( 5001 Modbus 번지 ) 값을 설정한 값으로 변경할 수 있다.
예3) Station : 1 Address : 2 Extra1 : TRANS, EXTRA2 : 200 으로 설정하고 아날로그 출력을 하면 1번 Station Transfix 장비의 2번 Historical Record 값을 읽어서 통신 프로그램의 200 번 WORD/DWORD/FLOAT 메모리 번지부터 저장한다.